package com.abc.example.service;

/**
 * @className		: IdCheckService
 * @description	: 对象ID检查服务接口类型
 * @summary		: 集中式对象ID有效性检查服务
 * @history		:
 * ------------------------------------------------------------------------------
 * date			version		modifier		remarks                   
 * ------------------------------------------------------------------------------
 * 2023/04/08	1.0.0		sheng.zheng		初版
 *
 */
public interface IdCheckService {

	/**
	 * 
	 * @methodName		: getObjById
	 * @description	: 检查对象ID的有效性，如果有效则返回对象，如果无效，则抛出异常
	 * @param clazzName	: 对象类名称
	 * @param id		: ID的值
	 * @param params	: 可选参数，适用于多个key字段的对象
	 * @return			: ID对应的对象
	 * @history		:
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks                   
	 * ------------------------------------------------------------------------------
	 * 2023/04/08	1.0.0		sheng.zheng		初版
	 *
	 */
	public Object getObjById(String clazzName,Object id,Object...params);
	
	/**
	 * 
	 * @methodName		: getObjByUniqueKey
	 * @description	: 根据唯一键或准唯一键获取对象
	 * @param clazzName	: 对象类名称
	 * @param propName	: 属性名，组合唯一键使用逗号分隔
	 * @param propValue	: 唯一键对应的值，组合唯一键使用数组
	 * @return			: 如对象存在，返回对象，否则返回null
	 * @history		:
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks                   
	 * ------------------------------------------------------------------------------
	 * 2024/01/27	1.0.0		sheng.zheng		初版
	 *
	 */
	public Object getObjByUniqueKey(String clazzName,String propName,Object propValue);
	
	/**
	 * 
	 * @methodName		: getObjIdByName
	 * @description	: 根据对象名称获取对象的ID
	 * @param clazzName	: 对象类名称
	 * @param propName	: 属性名，组合唯一键使用逗号分隔
	 * @param propValue	: 唯一键对应的值，组合唯一键使用数组
	 * @return			: 如对象存在，返回对象ID，否则返回null
	 * @history		:
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks                   
	 * ------------------------------------------------------------------------------
	 * 2024/05/15	1.0.0		sheng.zheng		初版
	 *
	 */
	public Object getObjIdByName(String clazzName,String propName,Object propValue);
		
}
